<?php
/**
 * @author shurik2533
 * Интерфейс описывает методы для работы с таблицей пользователей
 */
interface Default_Model_DbTable_UsersTableInterface
{
    /**
     * Возвращает данные пользователя
     * в виде ассоциативного массива формата
     * 'id'                 => int 		$id                  Идентификатор пользователя
     * 'email'              => string 	$email               Адрес электронной почты пользователя
     * 'login'              => string 	$login               Логин пользователя
     * 'firstName'          => string 	$firstName           Имя пользователя
     * 'lastName'           => string 	$lastName            Фамилия пользователя
     * 'registrationDate'	=> string 	$registrationDate    Дата регистрации пользователя
     * @param int $id Идентификатор пользователя
     * @return mixed|null
     */
    public function findUser($id);
    
    /**
     * Возвращает данные пользователя
     * в виде ассоциативного массива формата
     * 'id'                 => int 		$id                  Идентификатор пользователя
     * 'email'              => string 	$email               Адрес электронной почты пользователя
     * 'login'              => string 	$login               Логин пользователя
     * 'firstName'          => string 	$firstName           Имя пользователя
     * 'lastName'           => string 	$lastName            Фамилия пользователя
     * 'registrationDate'	=> string 	$registrationDate    Дата регистрации пользователя
     * @param string $email Электронная почта пользователя
     * @return mixed|null
     */
    public function findUserByEmail($email);
	
	/**
	 * Обновляет пароль пользователя
	 * @param int $id Идентификатор пользователя
	 * @param string $passwordHash hash код пароля
	 * @param string $passwordSalt salt пароля
	 * @return bool обнволены ли данные
	 */
	public function updateUserPassword($id, $passwordHash, $passwordSalt); 
	
	/**
	 * Проверяет соответсвие указаного пароля с паролем пользователя
	 * @param int $id Идентификатор пользователя
	 * @param string $password Пароль
	 * @return bool Верен ли пароль
	 */
	public function checkPassword($id, $password);
	
	/**
	 * Проверяет наличие пользователей с указанным адресом электронной почты
	 * @param string $email Электронная почта
	 * @return bool Найдены ли соответсвующие записи
	 */
	public function checkEmailExistance($email);
}